package com.ctsi.organise.common.api;

import com.ctsi.organise.common.model.Person;
import com.ctsi.security.domain.SRole;

import java.util.List;


public interface RoleServiceProxy {

    SRole findById(String roleId);

    List<Person> findPersonByOrganAndRole(String organId, String roleId);

    List<String> findPersonIdByOrganAndRole(String organId, String roleId);

    /**
     * 不控制数据权限的取得组织ID内的所有角色
     *
     * @param partyId
     * @return
     */
    List<? extends SRole> getOrganRoles(String partyId);

    /**
     * 不控制数据权限，根据业务类型type以及组织ID获取所有角色
     *
     * @param partyId
     * @param type
     * @return
     */
    List<? extends SRole> getOrganRoles(String partyId, String type);

    /**
     * 获得人员所具有的角色
     *
     * @param partyid
     * @return
     */
    List<? extends SRole> getPersonRoles(String partyid);

    /**
     * 获取角色成员id
     *
     * @param roleId
     * @return
     */
    List<String> getRoleMember(String roleId);

    /**
     * 获取角色成员对象
     *
     * @param roleId
     * @return
     */
    List<Person> getRoleMemberObj(String roleId);


    List<Integer> saveRolePartyReturnList(String roleId, String[] arrayPartyId, String[] arrayPartyName, String type, boolean event);

    /**
     * 保存角色、party对应对象
     *
     * @param roleId
     * @param partyId
     * @param partyName
     * @param joinWay
     * @param type
     */
    void saveRoleParty(String roleId, String partyId, String partyName, int joinWay, String type, boolean publishEvent);

    /**
     * 保存角色下的用户、用户组和组织
     *
     * @param type
     * @param roleId
     * @param arrayPartyId
     * @param arrayPartyName
     * @return
     */
    int saveRolePartyReturnInt(String type, String roleId, String[] arrayPartyId, String[] arrayPartyName);

}
